package vip.sweet.sys.modular.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;
import vip.sweet.common.response.CommonPageResponse;
import vip.sweet.sys.modular.resources.entity.Resources;
import vip.sweet.sys.modular.role.entity.Role;
import vip.sweet.sys.modular.user.entity.User;
import vip.sweet.sys.modular.user.params.UserAddParams;
import vip.sweet.sys.modular.user.params.UserAuthorizedRolesParams;
import vip.sweet.sys.modular.user.params.UserPageParams;
import vip.sweet.sys.modular.user.vo.UserInfo;

import java.util.List;

/**
 * @author tianlianyin
 * @Date 2024/11/9
 */
public interface UserService extends IService<User>  {
    /**
     *  根据用户名获取角色
     * @param username 用户名
     * @return 角色集合
     */
    List<Role> getAllRolesByName(String username);

    /**
     *  根据用户名获取权限
     * @param username 用户名
     * @return 权限集合
     */
    List<Resources> getAllResourceByName(String username);

    /**
     *  根据用户名获取权限
     * @param username 用户名
     * @return 权限集合
     */
    List<Resources> getAllAuthByName(String username);

    /**
     *  根据用户名获取用户信息
     * @param username 用户名
     * @return 用户信息
     */
    UserInfo getUserInfo(String username);

    /**
     *  新增用户
     * @param user 用户参数
     * @return 新增结果
     */

    boolean add(UserAddParams user);

    /**
     *  删除用户
     * @param id 删除id
     */

    boolean delete(String id);

    /**
     *  编辑用户
     * @param user 参数
     * @return 编辑结果
     */

    boolean edit(User user);

    /**
     *  上传头像
     * @param avatar 头像
     */
    boolean uploadAvatar(MultipartFile avatar);

    /**
     *  分页查询用户
     * @param userPageParams 分页条件
     */

    CommonPageResponse pageList(UserPageParams userPageParams);

    /**
     *  授权角色
     * @param roleIds 角色id
     */

    boolean authorizedRoles(UserAuthorizedRolesParams roleIds);

    boolean exportInfo(String username);
}
